package com.newtouch.bxzs.business.train.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.newtouch.bxzs.business.train.model.bo.*;
import com.newtouch.bxzs.business.train.model.vo.UserExaminationQuestionsVO;
import com.newtouch.bxzs.business.train.model.vo.UserExaminationResultVO;
import com.newtouch.bxzs.business.train.model.vo.UserExaminationVO;
import com.newtouch.bxzs.business.train.model.vo.UserWrongCollectionQuestionsVO;

/**
 * 用户考试管理Service类
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/3/25 9:46</td>
 * <td>dingqianbin</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author dingqianbin
 * @version 1.0.0
 * @since 1.0.0
 */
public interface UserExaminationService {
    /**
     * 查询我的考试信息
     *
     * @return 用户考试信息BO
     */
    UserExaminationInfoBO getUserExaminationInfo();

    /**
     * 查询用户考试列表
     *
     * @param userExaminationVO 用户考试列表查询VO
     * @return 用户考试列表信息BO
     */
    IPage<UserExaminationBO> getUserExaminationList(UserExaminationVO userExaminationVO);

    /**
     * 参加考试返回考题
     *
     * @param userExaminationQuestionsVO 获取考试试题VO
     * @return 用户考试试题信息BO
     */
    UserJoinExaminationInfoBO getUserExaminationQuestions(UserExaminationQuestionsVO userExaminationQuestionsVO);

    /**
     *答题信息提交
     *
     * @param userExaminationResultVO 答题信息提交VO
     * @return Integer
     */
    Integer updateUserExaminationResult(UserExaminationResultVO userExaminationResultVO);

    /**
     * 查询错题/收藏题列表
     *
     * @param userWrongCollectionQuestionsVO 查询错题/收藏题列表VO
     * @return 错题/收藏题列表BO
     */
    IPage<UserWrongCollectionQuestionsBO> getWrongCollectionQuestions(UserWrongCollectionQuestionsVO userWrongCollectionQuestionsVO);

    /**
     *查询试题详情信息
     *
     * @param examinationQuestionsId 试题ID
     * @return 试题详情信息BO
     */
    UserQuestionBO getQuestionInfo(String examinationQuestionsId);

    /**
     * 答题结束提交
     *
     * @param userExaminationResultVO 答题信息提交VO
     * @return String
     */
    String endOfAnswer(UserExaminationResultVO userExaminationResultVO);
}
